Many different forms of searching computer based data are known. One of the most well known is boolean searching. In boolean searching, a condition is tested to determine if it is true or false. For example, a database might be searched for documents containing the word “green.” If green is found in the document, the document is treated as being “true” for purposes of the query. Likewise, if green is not found in the document, the document is treated as being “false” for purposes of the query.
Boolean searching allows the searcher to link various queries using boolean operators. The principle boolean operators are AND, OR, NOT and NEAR. AND requires both queries to return a “true” response for a document or data point to be treated as responsive. OR requires either query to return a “true” response for a document or data point to be treated as responsive. NOT requires the first query to return a “true” response and the second query to return a “false” response. Finally, NEAR requires both queries to return a “true” response, and it requires the objects of the query to appear within a predetermined distance of one another in the document or data point. Thus, for example, one searching for a document about green grass could search for green AND grass. Only documents containing both terms would be returned. Similarly, one searching for information about anything green as well any type of grass could search for green OR grass. Documents containing either term would be returned. One searching for information on grasses other than green grasses could search for grass NOT green. Only documents containing grass but also not containing green would be returned. Finally, one could attempt to eliminate results not pertaining to green grass by searching for green NEAR grass. Both green and grass would have to be present in the document and the terms would have to be within a predetermined distance of each other for the document to be responsive.
Boolean searching works well for “keyword” searches and is particularly effective for searching documents. However, boolean searching can also be used to search other concrete conditions. For example, one searching for long articles on grass could search for grass and (pages >100). To be responsive, an article would have to include the word grass and be over one hundred pages.
Boolean searches can be used for databases containing visual elements as well. For example, instead of searching for documents containing the word green, one could search for shirts that are green by entering the boolean operator color=green. Only green shirts would be returned. However, at this point some of the difficulties with boolean searching begin to become apparent. For boolean operators to work, objects in the database must be coded. If an object is coded as green, a boolean search for green will return the object. If an object is not so coded, it will not be returned. How then, to code an object that is “teal?” Similarly, how to search for it?
If a teal shirt is coded green, it will be returned in the green search, along with numerous other shirts of various other shades of green (myrtle, forest, emerald, etc.). This creates potential problems in that the searcher may be looking for a teal shirt and could receive results that include so many non-responsive items that the desired object is difficult to locate. The opposite problem exists if the teal shirt is coded as teal. In this instance, if the searcher searches for green shirts, the teal shirt may not be returned at all.
The foregoing problems may be partially overcome by coding the shirt or other object as teal and green. However, this raises other problems. First, to effectively find the sought object, the searcher must know that the shade of green he or she is seeking is called teal, or myrtle or forest, as the case may be. If the searcher does not know that the shade sought is called teal or myrtle, then he cannot effectively narrow his search results from the universe of green shirts down to teal shirts or myrtle shirts. Second, the ability to narrow the search down by shade requires the searcher and the person who coded the objects to agree on what is teal. If the coder considered an object to be more of a tropical rain forest and coded it as such, our searcher who thinks he is looking for a teal shirt is unlikely to find it with a boolean search drawn to teal.
Another difficulty with boolean based searching is that our searcher may think he is looking for a teal green shirt, but if he were to view a teal blue shirt, would realize that teal blue is really closer to what is desired. Even though teal blue is quite close to teal green, the searcher is unlikely to uncover any teal blue shirts (or shirts of other proximate shades) via a strictly boolean search.
The foregoing problems involving color apply with equal or greater force to other search criteria. Consider a search for a frilly blouse or an abstract painting. It is extremely difficult for the searcher to frame a boolean search that will locate a blouse with a medium amount of “frilliness.” If a searcher finds a blouse that she finds to be too frilly, how can she design a boolean search that would return blouses that are less frilly. Similarly, how could a searcher design a boolean search for a painting with more red hues and that is simultaneously less abstract compared to another.
All of the foregoing highlight another problem with boolean searching. The issue is often more fundamental than the searcher not knowing precisely what to call the item being sought. Often, the searcher simply does not know what she is seeking at all. She'll know it when she sees it, but she'll need to browse to find it. Boolean searching is poorly suited to allowing the searcher to browse, and browsing at random can be daunting and frustrating. The searcher can be forced to work through numerous wholly irrelevant objects in order to find the object desired, and when an object is found that is close but not quite right, it can be difficult for the searcher to view more objects like the close item.
In view of the foregoing deficiencies in the prior art, a method and device satisfying one or more of the following objectives is desired.